package com.wms.mapper;

import com.wms.bean.PageBean;
import com.wms.dto.OutZhiJieDTO;
import com.wms.entity.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface OutMapper {

    //退货出库单  分页+条件查询
    List<Map<String, Object>> chaTuiHuo(@Param("id") Integer id,
                                        @Param("status") Integer status,
                                        @Param("startTime") String startTime,
                                        @Param("endTime") String endTime,
                                        @Param("offset") Integer offset,
                                        @Param("pageSize") Integer pageSize);

//    List<Map<String,Object>> ChanShangZhi(@Param("startTime") String startTime,
//                                          @Param("endTime") String endTime,
//                                          @Param("type") int type,
//                                          @Param("id") Integer id,
//                                          @Param("status") Integer status,
//                                          @Param("chukuType") Integer chukuType,
//                                          @Param("category") Integer category,
//                                          @Param("warmarea") String warmarea,
//                                          @Param("tiem") String tiem,
//                                          @Param("reason") String reason,
//                                          @Param("page") Integer page,
//                                          @Param("pageSize") Integer pageSize);

    List<Map<String,Object>> ChanShangZhi(OutZhiJieDTO outZhiJieDTO);
        /**
         * 新增出库任务
         * @param task 出库任务实体
         */
        void insertStockOutTask(DStockOutTask task);

        /**
         * 新增直接出库记录
         * @param direct 直接出库实体
         */
        void insertStockOutDirect(BStockOutDirect direct);

        /**
         * 批量插入出库任务明细
         * @param details 出库明细列表
         */
        void batchInsertTaskDetails(List<BStockOutTaskDetail> details);

        //查询所有出库
        List<Map<String, Object>> Allmingxi();




        //退货主表
        int save(OutStorePurchase outStorePurchase);
        //退货副表
        int saveZi(OutStorePurchase outStorePurchase);
        //保存退货明细
        int THall(@Param("taskId") String taskId,@Param("outStoreTaskDetails") List<OutStoreTaskDetail> outStoreTaskDetails);

        List<BatchStore> queryBatchNum(String mid);



    /**
     * //锁定指定库区库存数
     * @param id 库存id
     * @param number 锁定的数
     * @return
     */
     int lockStore(@Param("id") int id,@Param("number") int number);


    /**
     * 锁定物料库存数
     * @param code 物料编码
     * @param num
     * @return
     */
     int lockWL(@Param("code") String code,@Param("num") int num);

    //根据id查找直接出库任务明细
    List<Map> outZJdeatil(String id);

    //出库记录
    List<Map> outjilu(Integer productId);
}
